home *** CD-ROM | disk | FTP | other *** search
/ The Essential Home & Business Collection / The Essential Home & Business Collection.iso / 27 / 3 / 5 / HP22D5.ZIP / EXTERN / WITEM.C < prev    next >
Text File  |  1991-04-16  |  1KB  |  72 lines

  1. #include "extern.h"
  2.  
  3. /*
  4. ** This routine searches a string of items for a particular item and returns
  5. ** its item position (or 0 it it wasn't there). For example:
  6. **
  7. **    whichItem("orange,apple,fruit","apple")     -- returns 2
  8. **
  9. ** To call this routine from HyperPAD:
  10. **
  11. **    put whichItem(page field 1,"fruit") into w;
  12. **
  13. ** To use a different item delimiter, pass it as the third parameter:
  14. **
  15. **    whichItem("orange|apple|fruit","apple","|")   -- returns 2
  16. **
  17. */
  18. whichitem(NumArgs,hList,hItem,hDelimiter)
  19.  
  20. int NumArgs;
  21. HANDLE hList,hItem,hDelimiter;
  22.  
  23. {
  24.     PTR p,item,s;
  25.     int c = 1;
  26.     int rep,rc;
  27.     char d;
  28.  
  29.     if (NumArgs < 2 || NumArgs > 3) return(STOP);
  30.  
  31.     /* p = pointer to item list */
  32.     p = deref(hList);
  33.  
  34.     /* item = pointer to item */
  35.     item = deref(hItem);
  36.  
  37.     /* d = delimiter (use a comma if delimiter is not specified) */
  38.     d = (NumArgs == 3) ? *deref(hDelimiter) : ',';
  39.  
  40.     while (1) {
  41.         s = p;
  42.         while (*p && (*p != d)) p++;
  43.         if (rep = *p) *p = '\0';
  44.  
  45.         rc = strcmpi(s,item);
  46.         if (rep) *p = d;
  47.         if (!rc) break;
  48.         if (rep) p++;
  49.         else {
  50.         c = 0;
  51.         break;
  52.         }
  53.         c++;
  54.     }
  55.  
  56.     ReturnValue(itoh(c));
  57.  
  58.     return(STOP);
  59. }
  60.  
  61. POOL pascal Pool[] = {
  62.     {    "whichItem",
  63.         whichitem,
  64.         0,
  65.         FUNCTION},
  66.  
  67.     {    NULL,            /* NULLs signify the end of the table */
  68.         NULL,
  69.         0,
  70.         0}    };
  71.  
  72.